//
// Created by Tony on 2024/5/19.
//

#ifndef LEXER_CHAR_TOKEN_H
#define LEXER_CHAR_TOKEN_H

#include "Token.h"
#include <cstdint>

namespace Lexer {

class CharToken final : public Token {
    uint16_t value; // TODO 实现需要扩展为16bit编码的字符，当前仅支持ascii编码

public:
    CharToken(const Position& position, char value) : Token(position), value(value) {}

    TokenType type() override { return TokenType::CHAR_LITERAL; }

    uint16_t getValue() const { return value; }

    string toString() override { return string{static_cast<char>(value)}; }
};

} // namespace Lexer

#endif // LEXER_CHAR_TOKEN_H
